import logging
from pathlib import Path
from datetime import datetime

log = logging.getLogger(__name__)


def remove_log_by_create_time(log_dir, count=5, suffix='.logs'):
    """
      判断log目录文件大于4个，按文件创建时间删除
    :param log_dir: log日志目录
    :param count: 保留log文件数量
    :param suffix: 查找log文件后缀
    :return: None
    """
    if isinstance(log_dir, Path):
        p = log_dir
    elif isinstance(log_dir, str):
        p = Path(log_dir)
    else:
        log.error(f"文件路径参数不合法: {log_dir}")
        return
    if not p.exists():
        log.error(f"文件路径不存在: {log_dir}")
        return
    # 获取全部 .logs 后缀文件
    all_logs = [item for item in p.iterdir() if item.is_file() and item.suffix == suffix]
    # 按创建时间倒叙
    all_logs.sort(key=lambda x: x.stat().st_mtime, reverse=True)
    for item in all_logs[count - 1:]:
        item.unlink()  # 删除多余的


def set_log_format(config):
    """设置 logs 日志格式"""

    current_time = datetime.now().strftime(config.getini('log_file_date_format'))
    # 只保留最近 5 个 logs 文件
    remove_log_by_create_time(log_dir=Path(config.rootdir).joinpath(config.getini("log_file")))
    # log_file default logs file name
    config.option.log_file = Path(config.rootdir).joinpath(config.getini("log_file"), f'{current_time}.logs')
